# !/usr/bin/env python
# -*- coding: utf-8 -*-

# 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
#
# 如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ，就返回 0。
#
# 假设环境不允许存储 64 位整数（有符号或无符号）。
#
#
# 示例 1：
#
# 输入：x = 123
# 输出：321
# 示例 2：
#
# 输入：x = -123
# 输出：-321
# 示例 3：
#
# 输入：x = 120
# 输出：21
# 示例 4：
#
# 输入：x = 0
# 输出：0
#
#
# 提示：
#
# -2^31 <= x <= 2^31 - 1

class Solution:
    def reverse(self, x: int) -> int:
        s = str(x)
        length = len(s)
        if length == 1:
            return x
        start = 0
        sign = ''
        if s[0] == '-':
            sign = '-'
            start = 1
        index = length - 1
        res = ""
        while index >= start:
            res += s[index]
            index -= 1
        res_int = int(sign + res)
        if -pow(2, 31) <= res_int <= pow(2, 31) - 1:
            return res_int
        return 0

    def reverse2(self, x: int) -> int:

        res_int = 0
        num = abs(x)
        while num != 0:
            mod = num % 10
            res_int = res_int * 10 + mod
            num = num // 10
        if x < 0:
            res_int = res_int * -1
        if -pow(2, 31) <= res_int <= pow(2, 31) - 1:
            return res_int
        return 0


if __name__ == '__main__':
    s = Solution()
    print(s.reverse2(123))
    print(s.reverse2(-123))
